import { useUserStore } from '@/store/modules/user'
import { message, Modal } from 'ant-design-vue'
import router from '@/router/index'
import { ROUTER_NAME } from '@/constant'

const messageMap = new Map<number, string>()
messageMap.set(403, '用户得到授权，但是访问是被禁止的。!')
messageMap.set(404, '网络请求错误,未找到该资源!')
messageMap.set(405, '网络请求错误,请求方法未允许!')
messageMap.set(408, '网络请求超时!')
messageMap.set(500, '服务器错误,请联系管理员!')
messageMap.set(501, '网络未实现!')
messageMap.set(502, '网络错误!')
messageMap.set(503, '服务不可用，服务器暂时过载或维护!')
messageMap.set(504, '网络超时!')
messageMap.set(505, 'HTTP版本不支持该请求!')

export function checkStatus(status: number, msg: string, errorMessageMode: ErrorMessageMode = 'message'): void {
    const userStore = useUserStore()
    let errMessage: string | undefined = ''
    if (status === 400) {
        errMessage = `${msg}`
    } else if (status === 401) {
        errMessage = msg || '用户没有权限（令牌、用户名、密码错误）!'
        userStore.logout()
        try {
            router.push({ name: ROUTER_NAME.PAGE_LOGIN })
        } catch (e) {
            console.error(e)
        }
    } else {
        errMessage = messageMap.get(status)
    }

    if (errMessage) {
        if (errorMessageMode === 'modal') {
            Modal.error({
                title: '错误提示',
                content: errMessage
            })
        } else if (errorMessageMode === 'message') {
            message.error(errMessage)
        }
    }
}
